package mlz.b_bytestream;

import org.junit.Test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/*
   io流中的常用方法  -- 先写后读
 */
public class APIDemo02 {



    @Test // 写入单个字节
    public void write01() throws IOException {
        FileOutputStream fos = new FileOutputStream("b.txt");
        //以字节进行写入,只写入了一个单字节
        //1 是一个 int类型 -> 4字节 -> 32位
        //00000000 00000000 00000000 [00000001]
        fos.write(1);

        //ASCII表中存在的 -> a A 0
        fos.write(97);
        fos.write(65);
        fos.write(48);
    }

    @Test//读单个字节
    public void read01() throws IOException {
        FileInputStream fis = new FileInputStream("b.txt");
        /*读取的是一个字节,一次read只能读一个字节(8位)
            但是返回值是int -> 32位
            所以 读出来的8字节就会存储在 int类型中的低8位
         */
        int i1 = fis.read();
        int i2 = fis.read();
        int i3 = fis.read();
        int i4 = fis.read(); // 读取完毕 48
        int i5 = fis.read();
        System.out.println(i1);//1
        System.out.println(i4);//48
        //当程序读到末尾 会返回-1
        System.out.println(i5);//-1
    }


    //写入中文
    @Test
    public void write02() throws IOException {
        //i:229,i:147,i:136
        FileOutputStream fos = new FileOutputStream("c.txt", true);
        fos.write(229);
        fos.write(147);
        fos.write(136);


    }

    //读中文
    @Test
    public void read02() throws IOException {
        FileInputStream fis = new FileInputStream("c.txt");
        //读文件
        int i;
        while((i = fis.read()) != -1){
            System.out.print("i:" + i + ",");
        }
        /*
        i:229,i:147,i:136
        i:229,i:147,i:136
        i:229,i:147,i:136
        i:229,i:147,i:136
         */
    }


}












